.TH std::ranges::zip_view::end 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ranges::zip_view::end \- std::ranges::zip_view::end

.SH Synopsis
   constexpr auto end()                                          \fB(1)\fP (since C++23)
       requires (!(/*simple-view*/<Views> && ...);
   constexpr auto end() const                                    \fB(2)\fP (since C++23)
       requires (ranges::range<const Views> && ...);
   template< class... Rs >

     concept /*zip-is-common*/ =
       (sizeof...(Rs) == 1 && (ranges::common_range<Rs> && ...))
       ||
       (!(ranges::bidirectional_range<Rs> && ...) &&             \fB(3)\fP (exposition only*)
   (ranges::common_range<Rs> && ...))
       ||

       ((ranges::random_access_range<Rs> && ...) &&
   (ranges::sized_range<Rs> && ...));

   Returns a sentinel or an iterator that compares equal to the end iterator of the
   std::zip_view.

   Let views_ denote the underlying tuple of views.

   1) Equivalent to:
     * return /*sentinel*/<false>(/*tuple-transform*/(ranges::end, views_));,

   if /*zip-is-common*/<Views...> evaluates to false. Otherwise,
     * return begin() + std::iter_difference_t</*iterator*/<false>>(size());,

   if (ranges::random_access_range<Views> && ...) evaluates to true. Otherwise,
     * return /*iterator*/<false>(/*tuple-transform*/(ranges::end, views_));.
   2) Equivalent to:
     * return /*sentinel*/<true>(/*tuple-transform*/(ranges::end, views_));,

   if /*zip-is-common*/<const Views...> evaluates to false. Otherwise,
     * return begin() + std::iter_difference_t</*iterator*/<true>>(size());,

   if ranges::random_access_range<const Views> && ... evaluates to true. Otherwise,
     * return /*iterator*/<true>(/*tuple-transform*/(ranges::end, views_));.

.SH Parameters

   \fI(none)\fP

.SH Return value

   An iterator or sentinel representing the end of the zip_view, as described above.

.SH Notes

   ranges::range<const ranges::zip_view<Views...>> is modeled if and only if for every
   type Vi in Views..., const Vi models range.

.SH Example

    This section is incomplete
    Reason: no example

.SH See also

   begin       returns an iterator to the beginning
   (C++23)     \fI(public member function)\fP
   ranges::end returns a sentinel indicating the end of a range
   (C++20)     (customization point object)

.SH Category:
     * Todo no example
